package br.com.odontosul.action;

import java.sql.Date;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.event.ActionEvent;
import javax.persistence.EntityManager;

import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;

import br.com.odontosul.DAO.ConsultaDAO;
import br.com.odontosul.entity.Consulta;
import br.com.odontosul.entity.Paciente;
import br.com.odontosul.negocio.ConsultaNegocio;

@Name("consultaAction")
public class ConsultaAction {

	@In(value="entityManager")
	EntityManager em;
	
	@In(required=false, create=true)
	@Out(required=false)
	Consulta consulta;
	
	private Date DataConsulta; 
	
	List<Consulta> consultas = new ArrayList<Consulta>();
	
	private String nomePaciente;
	
	private String atendimento;
	
	@In(required=false, create=true)
	@Out(required=false)
	private Paciente paciente;
	
	public String salvarConsulta() throws SQLException{
		
		ConsultaDAO DAO = new ConsultaDAO();
		consulta.setPaciente(paciente.getId());
		
		if(consulta.getId() == null){
			DAO.adiciona(consulta);
		}else{
			DAO.alteraConsulta(consulta);
		}
		
		recuperaTodasConsultas();
		 
		 return "salvo";
	}
	
	public void recuperaTodasConsultas() throws SQLException{
		
		ConsultaNegocio consultaNegocio = new ConsultaNegocio();
		consultas = consultaNegocio.pesquisarTodasConsultas();
	}
	
	public void buscarConsulta() throws SQLException{
		ConsultaNegocio consultaNegocio = new ConsultaNegocio();
		consultas = consultaNegocio.buscarConsulta(consulta, nomePaciente);
	}
	
	public void excluiConsulta() throws SQLException{
		ConsultaDAO DAO = new ConsultaDAO();
		DAO.remove(consulta);
	}
	
	public String populaConsulta(ActionEvent event){
		
		UIComponent link = (UIComponent) event.getComponent();  
	    UIParameter param = (UIParameter) link.findComponent("entidadeConsulta");  
	    Consulta consulta = ((Consulta) param.getValue());
	    System.out.println(consulta);
	    
		return "editar";
	}
	
	public void salvarAtendimento(){
		System.out.println(this.atendimento);
	}
	
	public String getAtendimento() {
		return atendimento;
	}

	public void setAtendimento(String atendimento) {
		this.atendimento = atendimento;
	}

	public String adicionarAtendimento(ActionEvent event){
		
		UIComponent link = (UIComponent) event.getComponent();  
	    UIParameter param = (UIParameter) link.findComponent("entidadeConsulta");  
	    Consulta consulta = ((Consulta) param.getValue());
	    System.out.println(consulta);
		
		return "atendimento";
	}
	
	public Consulta getConsulta() {
		return consulta;
	}

	public void setConsulta(Consulta consulta) {
		this.consulta = consulta;
	}

	public String getNomePaciente() {
		return nomePaciente;
	}

	public void setNomePaciente(String nomePaciente) {
		this.nomePaciente = nomePaciente;
	}

	public Date getDataConsulta() {
		return DataConsulta;
	}

	public void setDataConsulta(Date dataConsulta) {
		DataConsulta = dataConsulta;
	}

	public Paciente getPaciente() {
		return paciente;
	}

	public void setPaciente(Paciente paciente) {
		this.paciente = paciente;
	}

	public List<Consulta> getConsultas() {
		return consultas;
	}

	public void setConsultas(List<Consulta> consultas) {
		this.consultas = consultas;
	}
	
}
